﻿using Signit.Sdk.Types;
using System.Collections.Generic;

namespace Signit.Sdk.Entity
{
    /**
     * 接收方信息。 包含接收方名字、接收方联系方式、安全等级、接收方类型、 接收方是否必须预分配表单域、设置接收方私人信息、接收方处理顺序、
     * 签署认证等级、接收方所在企业名称、信封自定义元数据信息、预设表单信息.
     */
    public class Receiver
    {
        /**
         * 接收方名字.
         */
        public string Name { get; set; }
        /**
         * 接收方联系方式.
         */
        public Contact Contact { get; set; }
        /**
         * 安全等级.
         * </p>
         * 对应枚举：SecureLevel
         * 
         */
        public SecureLevel SecureLevel { get; set; }
        /**
         * 接收方类型。 接收方类型：ReceiverType
         * 
         */
        public ReceiverType Type { get; set; }
        /**
         * 接收方是否必须预分配表单域.
         */
        public bool NeedForm { get; set; }
        /**
         * 设置接收方私人信息.
         */
        public string AssignedMessage { get; set; }
        /**
         * 接收方处理顺序.
         */
        public int AssignedSequence { get; set; }

        /**
         * 接收方所在企业名称.
         */
        public string EnterpriseName { get; set; }
        /**
         * 信封自定义元数据信息.
         */
        public string Metadata { get; set; }
        /**
         * 预设表单信息.
         */
        public IList<PresetForm> PresetForms { get; set; }

        public EnvelopeRoleType RoleType { get; set; }

        /**
         * 流程完成后删除当前参与者的信封。 默认：false
         * 
         */
        public bool DeleteCompletedEnvelope { get; set; }
        /**
         * 参与者处理表单各种模式的枚举
         */
        public ParticipantHandleMode HandleMode { get; set; }

        public IList<AuthType> SelectedAuthTypes { get; set; }

        /**
         * 启用嵌入模式，调用方系统中直接嵌入易企签WEB流程时设置为true，签署流程消息只会通过webhook事件消息方式通知，用户在易企签平台设置的短信/邮件等消息将自动屏蔽。非必填，默认值：false.
         * @since 2.1.0
         */
        public bool EnableEmbeddedMode { get; set; }

        /**
         * 签署接收方用户在调用方系统的唯一标识.<br/>
         * enableEmbeddedMode为false时，非必填；当enableEmbeddedMode为true时，则必填。默认：null
         * @since 2.1.0
         */
        public string ClientId { get; set; }
    }
}
